﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace University.Workshop.Business
{
    public class ManagerFeesAndFines
    {
        public static void VerifyDataFees(Model.FeesAndFines fees)
        {
            if (fees.Charge == 0)
                throw new Exception("Se necesita una tarifa de cobro");
            if (fees.NewConection == 0)
                throw new Exception("Se necesita una tarifa por conexion a red");
            if (fees.Reconnection == 0)
                throw new Exception("Se necesita una traifa de reconexion");
            if (fees.BaseRate == 0)
                throw new Exception("Se necesita una tarifa de mantenimiento");
            if (fees.NewMember == 0)
                throw new Exception("Se necesita una tarifa de nuevo socio");
            if (fees.NonPayment == 0)
                throw new Exception("Se necesita una tarifa de ausencia de pago");
            if (fees.MeterViolation == 0)
                throw new Exception("Se necesita una tarifa para violacion de medidor");
            if (fees.EffectiveDate == null)
                throw new Exception("Se necesita una fecha de vigencia");

        }
        
        public static void RegisterFees(Model.FeesAndFines fees)
        {
            DataAccess.DataAccessFeesAndFines.RegisterFees(fees);
        }

        public static void ModifyFees(Model.FeesAndFines fees)
        {
            DataAccess.DataAccessFeesAndFines.ModifyFees(fees);
        }

        public static Model.FeesAndFines GetCurrentFees()
        {
            ICollection<Model.FeesAndFines> p = DataAccess.DataAccessFeesAndFines.GetLastInserted();
            if (p.Count == 0)
            {
                throw new Exception("No Existen tarifas registradas sera redireccionado al Registro");
            }
            else
            {
                return p.First();
            }
        }

        public static ICollection<Model.FeesAndFines> SearchFeesByParameter(Model.FeesAndFines feesRelative)
        {
            ICollection<Model.FeesAndFines> finded = DataAccess.DataAccessFeesAndFines.SearchFeesByParameter(feesRelative);
            if (finded.Count == 0)
            {
                throw new Exception("No se encontraron resultados de la busqueda...");
            }
            return finded;
        }
    }
}
